#ifndef FTP_CLIENT_H
#define FTP_CLIENT_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// #include <unistd.h>
// #include <arpa/inet.h>
// #include <sys/socket.h>

#include "PikaPlatform_socket.h"

#define MAXLINE 8192
#define CRLF "\r\n"
#define FTP_PORT 21
#define PASV_PORT_MIN 49152
#define PASV_PORT_MAX 65535



// 错误处理函数
void error(const char *msg);

// 连接到FTP服务器
int connect_to_ftp_server(const char *hostname, int port);

// 从套接字读取响应
char *read_response(int sockfd);

// 向服务器发送命令
void send_command(int sockfd, const char *command);

// 登录到FTP服务器
void login(int sockfd, const char *username, const char *password);

// 设置被动模式并解析数据连接的地址和端口
void passive_mode(int sockfd, struct sockaddr_in *data_addr, int *data_port);

// 下载文件
void download_file(int sockfd, const char *remote_filename, const char *local_filename);

// 上传文件
void upload_file(int sockfd, const char *local_filename, const char *remote_filename);


// 接口定义 移植到别的硬件平台要修改他们
#define _ftp_send  pika_platform_send
#define _ftp_recv  pika_platform_recv   
#define _ftp_htons pika_platform_htons
#define _ftp_socket pika_platform_socket
#define _ftp_connect pika_platform_connect
#define _ftp_setsockopt pika_platform_setsockopt
#define _ftp_fcntl pika_platform_fcntl
#endif // FTP_CLIENT_H